%% 0-1规划枚举法解决方案
% 0-1 planning enumeration method
clear,clc
n=10;% 变量个数
c=[1,6,9,8,3,4,7,5,7,1];
b=40;
a=[2,4,10,2,6,5,4,6,9,6];
f=@(x)-sum(c.*x);% 目标函数
con=@(x)sum(a.*x)-b<=0;% 约束条件
x=zeros(1,n);% 初始计算点
x1=zeros(1,n);
result0=100;% 初始点函数值，给一个较大值，以便迭代正常更新
nm=floor(30*log(10)/log(2));% 自变量个数阈值
if(n<nm)
    p=2^n;
    for i=0:p-1
        xstr=dec2bin(i);
        xstr1=mat2cell(xstr,1,ones(1,numel(xstr)));
        xstr2=strjoin(xstr1,' ');
        xstr2=[' ',xstr2];
        len=numel(xstr);
        if(len~=n)
            xstr0=zeros(1,n-len);
            xstr2=[num2str(xstr0),xstr2];
        end
        x=str2num(xstr2);% 进行数值转换操作
        if(con(x)==1)
            result1=f(x);
            if(result1<result0(1))
                result0=result1;
                x1=x;
            elseif(result1==result0(1))
                result0=[result0;result1];
                x1=[x1;x];
            end
        end
    end
end